% Ejercicio "Bloques en struct de C"
\subsection*{\fbox{\theejercicio} - {\tt struct} de C}

Hallar una gram\'atica LL(1) que permita el an\'alisis sint\'actico de la declaraci\'on de variables de tipo estructura en C. S\'olo deben considerarse elementos de la estructura con los tipos b\'asicos {\tt int} y {\tt char}, o bien de tipo estructura, que pueden anidarse indefinidamente. Ejemplos:

\begin{center}
\begin{tabular}{|l|l|l|} \hline
                               &                                  &                                  \\
\verb@struct valores {@        & \verb@struct nodo {@             & \verb@struct arbol {@            \\
\verb@   int valor1, valor2;@  & \verb@   char nombre;@           & \verb@   struct valores {@       \\
\verb@   char ch1, ch2;@       & \verb@   char apellidos;@        & \verb@      int valor1, valor2;@ \\
\verb@} v1, v2, v3;@           & \verb@   struct valores {;@      & \verb@      char ch1, ch2;@      \\
                               & \verb@      int valor1, valor2;@ & \verb@   } v1;@                  \\
                               & \verb@      char ch1, ch2;@      & \verb@   struct valores {@       \\
                               & \verb@   } v1;@                  & \verb@      int valor1, valor2;@ \\
                               & \verb@} n1;@                     & \verb@      char ch1, ch2;@      \\
                               &                                  & \verb@   } v2;@                  \\
                               &                                  & \verb@} a1, a2;@                 \\ \hline
\end{tabular}
\end{center}

% Solución del ejercicio
\subsubsection*{SOLUCI\'ON}


\begin{center}
\begin{tabular}{|lcl|} \hline
                &               &                                                                        \\
{\em Axioma}    & $\rightarrow$ & {\tt struct} {\bf ID \{} {\em ListDecl} {\bf \}} {\em ListVar} {\bf ;} \\
{\em Decl}      & $\rightarrow$ & {\em Tipo ListVar} {\bf ;}                                             \\
{\em Tipo}      & $\rightarrow$ & {\tt struct} {\bf ID \{} {\em ListDecl} {\bf \}}                       \\
                & $|$           & {\tt int}                                                              \\
                & $|$           & {\tt char}                                                             \\
{\em ListDecl}  & $\rightarrow$ & {\em Decl ListDecl'}                                                   \\
{\em ListDecl'} & $\rightarrow$ & {\em Decl ListDecl'}                                                   \\
                & $|$           & $\varepsilon$                                                          \\
{\em ListVar}   & $\rightarrow$ & {\bf ID} {\em ListVar'}                                                \\
{\em ListVar'}  & $\rightarrow$ & {\bf , ID} {\em ListVar'}                                              \\
                &               & $\varepsilon$                                                          \\
                &               &                                                                 \\ \hline



\end{tabular}
\end{center}
